C++标准数据类型

梦想不会自己发光,真正闪耀的是那个为梦狂奔的你。献给知行的孩子们!(Eric.He著)


  本教程将全面讲解C++核心标准数据类型,包括整型、实型、字符型、布尔型的定义、特性、使用场景及注意事项,帮助你掌握C++基础数据类型的核心用法。

教程目录导航

一、C++数据类型核心概述

C++作为静态类型语言,要求所有变量在使用前必须声明数据类型。数据类型决定了:

C++标准数据类型分为四大类:

类型分类 具体类型 核心用途
整型 short、int、long、long long、unsigned系列 存储整数(正数、负数、0)
实型 float、double、long double 存储小数或科学记数法表示的数值
字符型 char 存储单个字符(字母、数字、符号)
布尔型 bool 存储逻辑值(真/假)

二、整型(整数类型)

整型用于存储没有小数部分的整数,根据占用内存大小和符号属性分为有符号整型signed和无符号整型unsigned,具体大小受操作系统和编译器影响(以下为C++标准最小要求)。

2.1 短整型(short int / short)


#include <iostream>
using namespace std;

int main() {
    short age = 18;          // 定义短整型变量
    short score = 95;        // 范围内的整数
    // short bigNum = 40000; // 错误:超出短整型取值范围,会溢出
    cout << "年龄:" << age << endl;
    cout << "短整型字节数:" << sizeof(short) << endl; // 输出2(多数系统)
    return 0;
}
        

2.2 整型(int)


#include <iostream>
using namespace std;

int main() {
    int num = 100000;        // 定义整型变量
    int count = 5000;        // 常规整数存储
    cout << "数值:" << num << endl;
    cout << "整型字节数:" << sizeof(int) << endl; // 输出4(多数系统)
    return 0;
}
        

2.3 长整型(long int / long)


#include <iostream>
using namespace std;

int main() {
    long timestamp = 1718000000; // 时间戳(秒)
    cout << "时间戳:" << timestamp << endl;
    cout << "长整型字节数:" << sizeof(long) << endl; // 4或8(系统决定)
    return 0;
}
        

2.4 超长整型(long long int / long long)


#include <iostream>
using namespace std;

int main() {
    long long bigId = 1234567890123456LL; // 后缀LL表示long long类型
    cout << "超大ID:" << bigId << endl;
    cout << "超长整型字节数:" << sizeof(long long) << endl; // 输出8
    return 0;
}
        

2.5 无符号整型系列

无符号整型仅存储非负整数(0和正数),取值范围是对应有符号类型的正数部分翻倍,关键字为unsigned + 对应整型:

类型 关键字 内存大小 取值范围 适用场景
无符号短整型 unsigned short 2字节 0 ~ 65535 存储非负小整数(如数量、索引)
无符号整型 unsigned int 4字节 0 ~ 4294967295 存储非负常规整数(如长度、大小)
无符号长整型 unsigned long 4/8字节 0 ~ 4294967295(4字节)/ 0~18446744073709551615(8字节) 存储非负长整数
无符号超长整型 unsigned long long 8字节 0 ~ 18446744073709551615 存储超大非负整数

#include <iostream>
using namespace std;

int main() {
    unsigned int length = 5000000; // 无符号整型,存储长度
    unsigned short count = 60000;  // 无符号短整型,超出有符号范围但合法
    // unsigned int neg = -10;     // 错误:无符号类型不能存储负数
    cout << "长度:" << length << endl;
    cout << "计数:" << count << endl;
    return 0;
}
        

三、实型(浮点类型)

实型(浮点型)用于存储包含小数部分的数值,也可存储科学记数法表示的数值,分为单精度、双精度、长双精度三种。

3.1 科学记数法

科学记数法用于表示极大或极小的数值,格式为:尾数e/E指数(如1.23e5表示1.23×10⁵,1.23e-5表示1.23×10⁻⁵)。


#include <iostream>
using namespace std;

int main() {
    double distance = 1.5e9;  // 1.5×10⁹(15亿)
    double tinyNum = 2.3e-6;  // 2.3×10⁻⁶(0.0000023)
    cout << "距离:" << distance << endl;
    cout << "小数:" << tinyNum << endl;
    return 0;
}
        

3.2 单精度实型(float)


#include <iostream>
using namespace std;

int main() {
    float height = 1.75f;     // 后缀f表示float类型(否则默认double)
    float weight = 65.5f;
    cout << "身高:" << height << "米" << endl;
    cout << "单精度字节数:" << sizeof(float) << endl; // 输出4
    return 0;
}
        

3.3 双精度实型(double)


#include <iostream>
#include <iomanip> // 用于设置输出精度
using namespace std;

int main() {
    double price = 99.99;     // 金额(双精度)
    double pi = 3.1415926535; // 圆周率(高精度)
    cout << "价格:" << price << endl;
    cout << "圆周率(10位精度):" << fixed << setprecision(10) << pi << endl;
    cout << "双精度字节数:" << sizeof(double) << endl; // 输出8
    return 0;
}
        

3.4 长双精度实型(long double)


#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    long double preciseNum = 1234567890.1234567890L; // 后缀L表示long double
    cout << "高精度数值:" << fixed << setprecision(15) << preciseNum << endl;
    cout << "长双精度字节数:" << sizeof(long double) << endl; // 输出10或16
    return 0;
}
        

四、字符型(char)

字符型用于存储单个字符,占用1字节内存,本质是存储字符对应的ASCII编码值(整数)。

4.1 ASCII编码

ASCII(美国信息交换标准代码)是字符与整数的映射规则,范围0~127,包含:

常用ASCII编码值

字符 ASCII值 字符 ASCII值
'0' ~ '9' 48 ~ 57 'A' ~ 'Z' 65 ~ 90
'a' ~ 'z' 97 ~ 122 空格 32
换行('\n') 10 回车('\r') 13

#include <iostream>
using namespace std;

int main() {
    char ch = 'A';            // 存储字符A
    cout << "字符:" << ch << endl;
    cout << "ASCII值:" << (int)ch << endl; // 强制转换为整数,输出65
    
    ch = 97;                  // 直接赋值ASCII值,对应字符a
    cout << "字符:" << ch << endl;
    return 0;
}
        

4.2 转义字符

转义字符以反斜杠\开头,用于表示无法直接输入的特殊字符,常见转义字符如下:

转义字符 含义 ASCII值
\n 换行符 10
\t 制表符(Tab) 9
\\ 反斜杠 92
\' 单引号 39
\" 双引号 34
\r 回车符 13
\b 退格符 8

#include <iostream>
using namespace std;

int main() {
    cout << "姓名:\t张三\n年龄:\t18" << endl; // \t制表符,\n换行符
    cout << "路径:C:\\Program Files\\C++" << endl; // \\表示反斜杠
    cout << "他说:\"Hello C++!\"" << endl; // \"表示双引号
    return 0;
}
        

五、布尔型(bool)

布尔型用于存储逻辑值,仅有两个取值:真(true)和假(false),占用1字节内存。


#include <iostream>
using namespace std;

int main() {
    bool isAdult = true;      // 标记是否成年
    bool hasPassed = false;   // 标记是否通过考试
    
    cout << "是否成年:" << boolalpha << isAdult << endl; // boolalpha输出true/false
    cout << "是否通过:" << boolalpha << hasPassed << endl;
    
    // 布尔型与整数的转换
    int num = isAdult;        // true转换为1
    cout << "true对应整数:" << num << endl;
    
    isAdult = 0;              // 0转换为false
    cout << "0转换为布尔值:" << boolalpha << isAdult << endl;
    return 0;
}
        

六、典型应用场景

七、注意事项

八、总结

掌握C++标准数据类型是编写高效、稳定代码的基础,需根据实际业务场景选择合适的类型,避免内存浪费和数据错误。


返回顶部